/* eslint-disable @typescript-eslint/naming-convention */

// export const demo_test = async () => {
//   // 为了使用WTS，我们需要首先创建一个DemoOperator，这也是网页与WTS的直接交互入口。
//   // 注意，下面的几个回调函数都是async的，因此需要网页端处理好后再返回，因为WTS可能会连续调用add_asset以及update_method
//   // 假如update_method调用的时候前面的add_asset还没有执行完毕，那么网页端可能就会找不到资产节点（但是WTS端此时应该是正确的）
//   const actor = new DemoOperator({
//     on_add_asset: async (asset) => {
//       // 这个函数会在WTS添加一个设计资产时调用。网页需要根据添加的设计资产渲染一个节点，同时展示资产具体的信息
//       // 我们提供了资产相关的函数: get_asset_meta(asset.id), get_asset_data(asset.id)和get_asset_url(asset.id)
//       // 可以通过get_asset_data来获取资产的原始数据（适用于文本类型），也可以通过get_asset_url获取资产链接（图片等）
//       console.log('asset:', asset)
//       if (asset.type === 'string') {
//         console.log('content: ', await get_asset_data(asset.id))
//       }
//     },
//     on_add_method: async (method) => {
//       // 当WTS添加一个设计方法时调用这个函数，需要在网页端渲染一个方法节点，同时根据Port渲染方法和资产的连线
//       console.log('add:', method)
//     },
//     on_update_method: async (method) => {
//       // 当WTS运行/更新一个设计方法时调用这个函数，此时网页端需要重新渲染该节点以及相关的连线
//       console.log('update:', method)
//     },
//   })
//
//   // 通过actor.talk_to_planner方法输入内容给planner，planner会自动调用上面的方法来添加节点
//   // 现在的设计只是权宜之计，未来应该是把Asset和Method都融合到文本里面，不然GPT读不了
//   // 理论上只要连续调用talk_to_planner并提供具体的资产ID就行了
//   // 注意：assetID是个ID，不是资产的内容，也就是method里面以及add_asset函数给你的那个ID
//   console.log(
//     await actor.talk_to_planner(
//       '我想设计一个赛博朋克风格的茶杯，请首先为我生成设计目标。',
//       [],
//       []
//     )
//   )
// }
